package demo.day04;

/**
 * @Auther: hjy(lc))
 * @Date: 2022/7/20-07-20-9:54
 * @Description：demo.day04  移位运算符 >> << >>>
 */
public class moveOp_use {
    public static void main(String[] args) {
        // 8的二进制表示： 00000000 00000000 00000000 00001000
        // >>1           00000000 00000000 00000000 0000100    0
        //  相当于 8/2   ->  4
        System.out.println(8>>1);      //  4  (有符号右移)
        //     00000000 00000000 00000000 00001000
        //  0  0000000 00000000 00000000 000010000
        System.out.println(8<<1);     //16  8*2

        //      10000000 000000000 00000000 00001000
        //      11111111 111111111 11111111 11110111   反码
        //      11111111 111111111 11111111 11111100 0  补码
        //      11111111 111111111 11111111 11111011    反码
        //      10000000 000000000 00000000 00000100
        System.out.println(-8>>1);    //-4

        // 12 >>>1 无符号右移动    一律补0   情况  12>>1
        // -12 >>> 1 左边补0
        // 10000000 00000000 00000000 00001100
        // 11111111 11111111 11111111 11110011   反码
        // 11111111 11111111 11111111 11110100  补码
        // 01111111 11111111 11111111 11111010 0
        // 2^31-5
        System.out.println(-12>>>1);

    }
}
